Dieser Abschnitt gibt eine Kurzübersicht über die XML-Funktionen und Ñ-Konventionen.
Bestandteile eines XML-Dokuments
Ein XML-Dokuments setzt sich in dieser Reihenfolge aus den folgenden Bestandteilen zusammen:
XML-Definitionen
Die XML-Definition, falls enthalten, ist stets die erste Zeile in einem XML-Dokument. Sie gibt neben der XML-Version des Dokuments an, ob die Datei Verweise auf andere Dateien enthält. Beispiel:
<?xml version="1.0" standalone="no"?>DOCTYPE-Definitionen (einschließlich DTD)
Die DOCTYPE-Definition die die DTD des Dokuments definiert wird stets hinter die XML-Definition und vor den Anfangstag des Stammelements gesetzt. Die DTD setzt sich aus zwei Hauptbestandteilen zusammen: einer externen und einer internen Untergruppe. Wenn das Dokument nur über die externe Untergruppe verfügt, sieht es so aus:
<?xml version="1.0" standalone="no">Wenn das Dokument nur über eine interne Untergruppe verfügt, sieht es so aus:
<?xml version="1.0" standalone="yes">Wenn das Dokument über eine externe und interne Untergruppe verfügt, sieht es so aus:
<?xml version="1.0" standalone="no">Elemente
Ein Element besteht aus einem Anfangstag (<TagName>), dem Inhalt und einem Endtag (</TagName>):
<TagName>Inhalt muss hier stehen.</TagName>Eine Ausnahme ist das leere Tag, bei dem es sich um ein einzelnes Tag mit einem Schrägstrich vor der schließenden spitzen Klammer > handelt:
<leeresTag/>Alle Elemente müssen ordnungsgemäß verschachtelt sein, d. h. das zuletzt geöffnete Tag muss geschlossen werden, bevor andere Tags geöffnet werden können. Die folgenden Zeile wäre beispielsweise in einem XML-Dokument ungültig, da <Tag2> nicht vor <Tag1> geschlossen wird:
<Tag1><Tag2>Inhalt muss hier stehen.</Tag1></Tag2>Jedes XML-Dokument muss über ein Stammelement verfügen, dass alle anderen Elemente des Dokuments enthält.
Bei den Elementnamen wird zwischen Groß- und Kleinschreibung unterschieden. Jedes Element muss mit einem Buchstaben oder einem Unterstrich (_) beginnen. Bei den darauf folgenden Zeichen kann es sich um Buchstaben, Unterstriche, Zahlen, Bindestriche und Punkte, nicht jedoch um Leerstellen oder Tabulatorzeichen handeln.
Attribute
Elemente können Attribute als Bestandteil des Anfangstags (oder, bei leeren Elementen, als Bestandteil des einzelnen Anfangs-/Endtag) enthalten. Ein Attribut besteht aus einem Namen, auf den ein Gleichheitszeichen und dann ein Attributwert in Anführungszeichen folgt. Beispiel:
<ElementName AttributName="Attributwert">Inhalt</ElementName>Kommentare
Ein Kommentar ist Text zwischen den Zeichen <!-- und -->. XML-Prozessoren sollten den Inhalt von Kommentaren ignorieren. Kommentare dürfen kein "--" oder andere Kommentare enthalten.
<!-- Dies ist ein Kommentar. Zeichen, wie z. B. < und > sind nicht zulässig. -->Verarbeitungsanweisungen
Eine Verarbeitungsanweisung ist Text zwischen den Zeichen <? und ?>. Verarbeitungsanweisungen werden ausschließlich von XML-Prozessoren gelesen und dürfen keinen Inhalt enthalten. Die Syntax für Verarbeitungsanweisungen sieht so aus:
<?Zielanweisung?>Zeichenverweise
Ein Zeichenverweis ist die Darstellung eines Unicode-Zeichens mit Hilfe von analysierten Zeichendaten. Die Syntax für Zeichenverweise sieht so aus:
&#UnicodeWertdesZeichens;Entitätsverweise
Entitätsverweise sind Namen, die bestimmte Zeichen, Textketten oder Dateien darstellen. Entitätsverweise in einem XML-Dokument werden stets zwischen ein Ampersand (&) und ein Semikolon (;) gesetzt. Beispiel: > steht für das "Größer als"-Zeichen (<), das im XML-Inhalt ausschließlich als Entitätsverweis enthalten sein darf.
Die Bedeutung jedes in einem XML-Dokument verwendeten Entitätsverweises muss in der DTD des Dokuments definiert werden. Ausgenommen sind die folgenden, vordefinierten Zeichenentitätsverweise, die ohne Definition verwendet werden können:
Zeichen | Entitätsverweis |
< | < |
> | > |
& | & |
" | " |
' | ' |
Wohlgeformte XML
Wohlgeformte XML-Dokumente müssen die folgenden Regeln erfüllen:
Gültiges XML-Dokument
Ein gültiges XML-Dokument ist ein wohlgeformtes XML-Dokument, d. h. es entspricht der DTD, die in seiner DOCTYPE-Definition festgelegt wird.
Dieser Abschnitt gibt eine Kurzübersicht über die DTD-Funktionen und Ñ-Konventionen.
Bestandteile einer DTD
Eine DTD kann sich aus den folgenden Bestandteilen zusammensetzen. Eine bestimmte Reihenfolge ist nicht erforderlich:
Elementtypendefinitionen
Die Syntax einer Elementypendefinition sieht so aus:
<!ELEMENT ElementName (ElementInhalt)>Bei den Elementnamen wird zwischen Groß- und Kleinschreibung unterschieden. Jedes Element muss mit einem Buchstaben oder einem Unterstrich (_) beginnen. Bei den darauf folgenden Zeichen kann es sich um Buchstaben, Unterstriche, Zahlen, Bindestriche und Punkte, jedoch nicht um Leerstellen oder Tabulatorzeichen handeln.
Der Elementinhalt kann aus analysierten Zeichendaten (d. h. Text- und Entitätsverweise, die als ausgedrückt werden) und/oder Elementtypen bestehen. Die folgenden Symbole können hinter dem Namen eines Elements oder der Abschlussklammer in der Elementinhaltsdefinition eingefügt werden:
Symbol | Bedeutung |
Keines | Genau eins |
+ | Eins oder mehr |
* | Null oder mehr |
? | Null oder eins |
Setzen Sie ein Komma, wenn ein Element auf ein anderes folgen soll:
<!ELEMENT ElementName (Element1, Element2)>Setzen Sie ein "|", um anzugeben, dass der Inhalt ein bestimmtes Element oder ein anderes Element enthalten kann:
<!ELEMENT ElementName (Element1 | Element2)>Verwenden Sie die folgende Syntax, wenn das Element eine Kombination aus bestimmten Elementen und #PCDATA in beliebiger Reihenfolge enthalten soll:
<!ELEMENT ElementName (#PCDATA | Element1 | Element2)*>Verwenden Sie die folgende Syntax, wenn das Element eine Kombination aus Elementen und #PCDATA in beliebiger Reihenfolge enthalten soll (Beachten Sie das Weglassen der Klammer):
<!ELEMENT ElementName ANY>Verwenden Sie die folgende Syntax für die Definition eines leeren Elements (Beachten Sie das Weglassen der Klammer):
<!ELEMENT ElementName EMPTY>Attributdefinitionen
Die Syntax für die Definition eines einzelnen Attributs sieht so aus:
<!ATTLIST ElementName AttributName AttributTyp StandardWert>Bei den Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden. Jedes Attribut muss mit einem Buchstaben oder einem Unterstrich (_) beginnen. Bei den darauf folgenden Zeichen kann es sich um Buchstaben, Unterstriche, Zahlen, Bindestriche und Punkte, jedoch nicht um Leerstellen oder Tabulatorzeichen handeln.
Attributarten können wie folgt aussehen:
Attributart | Bedeutung |
CDATA | Zeichendaten und Entitätsverweise zwischen Anführungszeichen ("") |
ID | Muss einen eindeutigen Namen* für jedes Element dieses Typs enthalten |
IDREF | Der eindeutige ID-Name* eines Elements in der XML-Datei |
ENTITY | Der Name* eines nicht analysierten externen Entitätsverweises, der in der DTD definiert ist |
ENTITIES | Eine Liste von ENTITY-Namen, durch Leerstellen getrennt |
Aufzählung | Eine Namensliste* in Klammern, in der die Namen durch ein |-Zeichen getrennt sind |
NMTOKEN | Ein Wert, der nur NameZeich-Zeichen** enthält |
NMTOKENS | Eine Liste aus NMTOKENs, durch Leerstellen getrennt |
NOTATION | Der Name einer in der DTD definierten Notation |
Aufzählungs-NOTATION | Eine Liste aus NOTATIONs in Klammern, durch |-Zeichen getrennt |
*Namen müssen mit einem Buchstaben oder einem Unterstrich (_) beginnen. Bei den darauf folgenden Zeichen kann es sich um Buchstaben, Unterstriche, Zahlen, Bindestriche und Punkte, jedoch nicht um Leerstellen oder Tabulatorzeichen handeln.
**NameZeich-Zeichen enthalten Buchstaben, Unterstriche, Zahlen, Bindestriche oder Punkte, jedoch keine Leerstellen oder Tabulatorzeichen.
Standard-Attributwerte können so aussehen:
Attributart | Bedeutung |
#REQUIRED | Dieses Attribut muss vom Element festgelegt werden |
#IMPLIED | Dieses Attribut kann bzw. kann nicht verwendet werden |
#FIXED Wert | Falls nicht festgelegt, wird dieses Attribut als Wert angenommen; falls festgelegt, muss es ein Wert sein. |
StandardWert | Falls nicht festgelegt, wird dieses Attribut als StandardWert angenommen |
Kommentare
Ein Kommentar ist Text zwischen den Zeichen <!-- und -->. XML-Prozessoren sollten den Inhalt von Kommentaren ignorieren. Kommentare dürfen kein "--" oder andere Kommentare enthalten
<!-- Dies ist ein Kommentar. Zeichen, wie z. B. < und > sind hier zulässig. -->Zeichenverweise
Ein Zeichenverweis ist die Darstellung eines Unicode-Zeichens mit Hilfe von analysierten Zeichendaten. Die Syntax für Zeichenverweise sieht so aus:
&#UnicodeWertDesZeichens,Zeichenverweisdefinitionen
Es gibt fünf Entitätstypen mit der folgenden Syntax:
Typ | Syntax |
Analysiert, intern | <!ENTITY EntitätsName "Text der Entität"> |
Analysiert, extern | <!ENTITY EntitätsName SYSTEM "URL der Datei"> ODER Ñ<!ENTITY EntitätsName PUBLIC "Name der Datei" "URL der Datei"> |
Nicht analysiert, extern | <!ENTITY EntitätsName SYSTEM "URL der Datei" NDATA NotationsName> Ñ ODER Ñ<!ENTITY EntitätsName PUBLIC "Name der Datei" "URL der Datei" NDATA NotationsName> |
Interne Parameter | <!ENTITY % EntitätsName "Text der Entität"> |
Externe Parameter | <!ENTITY % EntitätsName SYSTEM "URL der Datei"> ODER Ñ<!ENTITY % EntitätsName PUBLIC "Name der Datei" "URL der Datei"> |
Die Syntax für die Verwendung der ersten drei Entitätstypenverweise lautet &EntitätsName;. Die Syntax für die Verwendung einer Parameter-Entität lautet %EntitätsName;. Parameter-Entitätsverweise sind stets analysiert und dürfen nur in DTDs verwendet werden.
Notationsdefinitionen
Notationsdefinitionen sollten wie folgt verfasst werden:
<!NOTATION NotationsName SYSTEM "Externe Kennung">Die externe Kennung sollte der Name einer Anwendung sein, die die Dateien verarbeiten bzw. anzeigen kann, auf die diese Notation angewendet wird. Beispiel:
<!NOTATION gif SYSTEM "Microsoft Internet Explorer">Beachten Sie, dass es von der Anwendung, die die XML verarbeitet, abhängt, ob der URL an die von der externen Kennung angegebene Anwendung weitergeleitet wird.
Verarbeitungsanweisungen
Eine Verarbeitungsanweisung ist Text zwischen den Zeichen <? und ?>. Verarbeitungsanweisungen werden ausschließlich von XML-Prozessoren gelesen und dürfen keinen Inhalt enthalten. Die Syntax für Verarbeitungsanweisungen sieht so aus:
<?Zielanweisung?>Nehmen wir einmal an, Sie haben gerade eine XML-Datei aus avenue.quark exportiert. Wenn Sie sich die Datei in Ihrem Textbearbeitungsprogramm ansehen, stellen Sie fest, dass ein kleingeschriebenes "a" mit einem Akzent überall dort angezeigt wird, wo eigentlich das Warenzeichensymbol stehen sollte. Und das ist nicht das einzige Zeichen, das falsch abgebildet wird, eine ganze Reihe von Sonderzeichen sehen irgendwie falsch aus. Was ist passiert?.
Sehr wahrscheinlich wird die Verschlüsselung der XML-Datei von Ihrem Textbearbeitungsprogramm nicht unterstützt. Dieser Sachverhalt wird in diesem Abschnitt detailliert erklärt.
Was ist eine Verschlüsselung?
Eine Verschlüsselung ist eine Spezifikation, die eine Gruppe von Zeichen bestimmten numerischen Werten auf dem Bildschirm zuordnet. Beispielsweise ordnet der ASCII-Code das Zeichen "M" dem numerischen Wert 77, das Zeichen "N" dem numerischen Wert 78, das Zeichen "O" den numerischen Wert 79 usw. zu.
Die Verschlüsselung einer Textdatei ermöglicht es der Anwendung, die Textdatei in die richtigen Zeichen auf dem Bildschirm zu übersetzen. Ohne Verschlüsselung bestände eine Textdatei lediglich aus Ansammlung von Zahlen. Wenn Sie eine Textdatei mit der falschen Verschlüsselung anzeigen, werden die Zeichen nicht richtig abgebildet, da die Anwendung beim Öffnen der Datei die numerischen Wert der falschen Zeichengruppe zuordnet.
Im Folgenden sind einige Verschlüsselungen aufgelistet:
Avenue.quark unterstützt die Verschlüsselungen UTF-8, UTF-16 und Shift-JIS.
Unterer und oberer Zeichenbereich
Die meisten Verschlüsselungen lassen sich wie folgt aufteilen: die ersten 128 Zeichen (der untere Bereich) und alle darauf folgenden Zeichen (der obere Bereich).
Der untere Bereich der meisten Verschlüsselungen wird denselben Zeichen zugeordnet. Dieser Bereich enthält die Zeichen a-z, A-Z, 0-9, einige Interpunktionszeichen und einige spezielle Steuerzeichen.
Probleme treten meist mit den Zeichen des oberen Bereichs auf. Beispiel: Die unteren Bereiche der Schriften MacRoman und Windows Latin1 sind nahezu identisch. Wenn Sie also eine Datei, die nur Zeichen aus diesem Bereich verwendet, von Mac OS auf Windows übertragen, sollten keine Probleme auftreten. Wenn die Datei jedoch Zeichen aus dem oberen Bereich enthält, dann werden die Werte dieser Zeichen u.U. nicht den richtigen Zeichen auf der jeweiligen Plattform zugeordnet. Ein Zeichen, das beispielsweise unter Mac OS als Warenzeichensymbol angezeigt wird, wird unter Windows möglicherweise als hochgestelltes kleingeschriebenes "a" abgebildet.
Wenn die Zeichen nicht richtig abgebildet werden, kann dies zwei Ursachen haben. Entweder wird die Verschlüsselung des Textes von der Anwendung, in der er angezeigt wird, nicht erkannt, oder die Anwendung kann den Text mit der für die Datei festgelegten Verschlüsselung nicht ordnungsgemäß anzeigen
Verschlüsselungen angeben
Geben Sie die Verschlüsselung einer XML-Datei durch Einschließen der Verschlüsselungsspezifikation in der XML-Definition der Datei wie folgt an:
<?xml version="1.0" standalone="yes" encoding="Shift_JIS"?>Wenn die XML-Datei keine Verschlüsselungsspezifikation enthält, nimmt avenue.quark an, dass die Verschlüsselung UTF-8 verwendet wird.
Beim Sichern einer XML-Datei in avenue.quark geben Sie die Verschlüsselung des Dokuments im Popup-Menü Verschlüsselung an. Das zugehörige Verschlüsselungsattribut wird dann automatisch von avenue.quark generiert.
Verschlüsselungen und DTDs
Mit XML können Sie die Verschlüsselung für eine XML-Datei, nicht jedoch für eine freistehende DTD-Datei festlegen.
Dies ist zum Glück mit avenue.quark möglich. Fügen Sie den folgenden Text als erste Zeile der Datei wie folgt hinzu, um die Verschlüsselung für eine freistehende DTD-Datei festzulegen:
<? xml encoding="encodingName" ?>Wenn Sie beispielsweise eine freistehende DTD als UTF-16 DTD festlegen möchten, setzen Sie einfach die folgende Zeile an den Dateianfang:
<? xml encoding="UTF-16" ?>.